home *** CD-ROM | disk | FTP | other *** search
/ BBS Toolkit / BBS Toolkit.iso / programs / mbbs12d.zip / MACROMSG.MAC < prev    next >
Text File  |  1992-06-23  |  35KB  |  1,155 lines

  1.  
  2.                          MACROMSG.MAC v1.2d
  3.                 by Jeff Oberlee   (C)opyright 1992
  4.  
  5. {:alr}  {MACL MACROBBS.MAC,WF3}     {:alu}  {MACL MACROBBS.MAC,bbs}
  6.  
  7. {:esc_menu}
  8.   {IFCA ,ESM}  {SEND ^J^M%an7%%an9%Time comes to a grinding halt!  %an0}
  9. {:ESM}  {SETE-P0 ESM2}  {SETV ch}
  10.   {PARM ,,,,0}
  11.   {INPU ch, PRESS:  [ENTER] to CHAT, [U]seredit, [D]OS, [H]angup}
  12.   {COMP ch,h}  {IFCO ESM4}
  13.   {COMP ch,d}  {IFCO ESM5}
  14.   {COMP on,}   {IFCO ESM}
  15.   {COMP ch,u}  {IFCO ESM3}
  16.   {COMP ch,}   {IFCO ,ESM}
  17. {:ESM1}  {COMP cf,}   {IFCO CT8,ESM}
  18. {:ESM2}  {SETE-P0 esc_menu}
  19.   {IFCA ,ESM6}  {SEND %an3%Then suddenly...}  {PAUS 1}
  20. {:ESM6}  {RETURN}
  21. {:ESM5}  {SHEL}  {GOTO ESM}
  22. {:ESM3}  {COMP open,y}  {IFCO ESM}
  23. {:ESM8}  {COMP login_name,}  {IFCO ESM}
  24.   {SETV lname,%login_name}  {INPU lname,EDIT: Handle  (3-30 characters)}
  25.   {COMP lname,1}  {IFCO-GE ESM8}
  26.   {LENG %lname}  {COMP _len,3}  {IFCO-L ESM8}
  27.   {LENG %lname}  {COMP _len,30}  {IFCO-G ESM8}
  28. {:ESM9}  {SETV temp,%protocol}  {INPU temp,EDIT: Protocol  (1 letter)}
  29.   {LENG %temp}  {COMP _len,1}  {IFCO ,ESM9}
  30. {:ESM0}  {SETV ch,%al}  {INPU ch,EDIT: Access Level  (0-999)}
  31.   {COMP ch,999}  {IFCO-G ESM0}
  32.   {SETV al,%ch}
  33.   {SETV protocol,%temp}
  34.   {SETV row,%_row}  {SETV col,%_col}  {DISP 2,2,0F,%an9 * Saving * }
  35.   {COMP lname,%login_name}  {IFCO ESM7}
  36.   {SETV login_name,%lname}
  37.   {SETE time_out}
  38.   {CALL update_clist}
  39. {:ESM7}  {CALL write_user}
  40.   {DISP 2,2,07,            }
  41.   {DISP %row,%col,,}
  42.   {SETV row}  {SETV col}  {SETV lname}
  43.   {GOTO ESM}
  44. {:ESM4} {SETV s,2}  {GOTO time_out}
  45.  
  46. {:chat}
  47.   {SETV temp,0}   {SETV ccount,0}
  48.   {WOPE-A %datadir%LOG-1.LOG}  {WRIT %_tim : Chat request}  {WCLO}
  49.   {SEND ^J^M^J%an4%Paging %sysop ...^J^M}
  50.   {SPOC n}  {SEND %an3%Press %an0[ESC]%an3 then %an0[ENTER]%an3 to chat with%an7 %login_name %an3...^J^M}  {SPOC y}
  51. {:CT7}  {INCR ccount}  {SETV-S ch,an%ccount}
  52.   {SEND %ch█}
  53.   {SEND ^G}  {SEND ^G}  {SEND ^G}  {PAUS 2}
  54.   {COMP ccount,5}  {IFCO-G ,CT7}
  55. {:CT6}  {SETV chat,CHAT}
  56.   {SEND ^M%an0%Sorry, %sysop isn't around right now.^J^M}
  57.   {SEND %an0%However, the chat flag has been set.^J^M^J}
  58.   {GOTO CT9}
  59. {:CT8}  {SETV tl,%_ela}
  60.   {SETG 240,time_out}
  61.   {WOPE-A %datadir%LOG-1.LOG}  {WRIT %_tim : Started chat}  {WCLO}
  62.   {COMP cb,y}  {IFCO ,CT14}
  63.   {CAPT y,%datadir%CHAT.LOG}
  64. {:CT14}  {SEND ^J^M^J%an3%You've just entered . . . %an7%The Twilight Zone.  %an3%Reality vanishes.^J^M}
  65.   {SEND %an2(Type "%an0%bye!%an2" on a blank line to exit when desired.)^J^M}
  66.   {SETV cf,1}  {SETV co1,%an0}  {SETV co2,%an3}
  67.   {SETE-P0 esc_menu}
  68.   {PUSH}
  69. {:CT2}  {COMP cf,1}  {IFCO CT3}
  70.   {SEND %co2}  {SETV cf,1}  {GOTO CT4}
  71. {:CT3}  {SEND %co1}  {SETV cf,2}
  72. {:CT4}  {SETV cline}
  73. {:CT5}  {SEND ^J}
  74. {:CT13}  {SEND ^M%cline}
  75.   {GETS-AH cline,78,CT2}
  76.   {COMP cline,/c}  {IFCO switch_c}
  77.   {COMP cline,bye!}  {IFCO CT1}
  78.   {COMP cline,bye!!}  {IFCO time_out}
  79.   {COMP cline,/scroll}  {IFCO view_scroll}
  80.   {COMP cline,NO CARRIER}  {IFCO time_out}
  81.   {LENG %cline}  {COMP %_len,77}  {IFCO-LE CT4}
  82.   {SETV ccount,80}  {SETV dline,0}  {SETV cline, %cline}
  83. {:CT11} {DECR ccount}  {INCR dline}
  84.   {COMP ccount,60}  {IFCO-LE CT4}
  85.   {SUBS ch,%ccount,1,%cline}
  86.   {COMP ch, }  {IFCO ,CT11}
  87.   {COMP ccount,79}  {IFCO CT4}
  88.   {INCR ccount}
  89.   {SUBS cline,%ccount,%dline,%cline}
  90.   {SETV ccount,0}
  91. {:CT12} {INCR ccount}  {SEND ^H}
  92.   {COMP ccount,%dline}  {IFCO ,CT12}
  93.   {GOTO CT5}
  94. {:CT1}  {CAPT n}
  95.   {SETV ch,%_ela}  {DECR ch,%tl}  {INCR tlc,%ch}  {SETV tl}
  96.   {SEND ^J^M^J%an3%You've just left . . . %an7%The Twilight Zone.  %an3%Reality restored.^J^M^J}
  97.   {WOPE-A %datadir%LOG-1.LOG}  {WRIT %_tim : Ended chat}  {WCLO}
  98.   {SETV cf}  {SETV co1}  {SETV co2}  {SETV chat}  {SETV cline}
  99.   {POPS}
  100. {:CT9}  {SETV ccount}
  101.   {SETE-P0 esc_menu}
  102.   {CALL press_any_key}
  103.   {RETURN}
  104.  
  105. {:switch_c}
  106. {:SW1}  {SEND ^M%an0(0 %an1%1 %an2%2 %an3%3 %an4%4 %an5%5 %an6%6 %an7%7%an0)  ^H}
  107.   {GETS-H ch,1,SW1}
  108.   {COMP ch,0}  {IFCO-L SW1}
  109.   {COMP ch,7}  {IFCO-G SW1}
  110.   {SEND ^M                    ^M}
  111.   {COMP cf,1}  {IFCO ,SW3}
  112.   {SETV-S co2,an%ch}  {SEND %co2}  {GOTO SW4}
  113. {:SW3}  {SETV-S co1,an%ch}  {SEND %co1}
  114. {:SW4}  {SETV cline}
  115.   {GOTO CT13}
  116.  
  117. {:view_scroll}
  118.   {SCROLL}
  119.   {GOTO CT4}
  120.  
  121. {:update_clist}
  122.   {ROPE %datadir%CALLERS.LST,UC1}
  123.   {WOPE %datadir%TEMP.000}
  124. {:UC2}  {READ ch}  {READ cline}  {READ dline}
  125.   {COMP ch,%userno}  {IFCO UC3}
  126.   {WRIT %ch}  {WRIT %cline}  {WRIT %dline}  {GOTO UC2}
  127. {:UC3}  {COMP s,1}  {IFCO UC5}
  128. {:UC4}  {WRIT %ch}
  129.   {WRIT %login_name}
  130.   {WRIT %password}
  131. {:UC5}  {READ dline}  {WRIT %dline}  {GOTO UC5}
  132. {:UC1}  {WCLO}
  133.   {EXEC-N COPY %datadir%TEMP.000 %datadir%CALLERS.LST}
  134.   {EXEC-N DEL %datadir%TEMP.000}
  135.   {RETURN}
  136.  
  137. {:write_user}
  138.   {WOPE %userdir%%userno.MHS}
  139.   {WRIT %login_name}
  140.   {WRIT %password}
  141.   {WRIT %al}
  142.   {WRIT %protocol}
  143.   {WRIT %expert}
  144.   {WRIT %a}
  145.   {WRIT %fa}
  146.   {WCLO}
  147.   {RETURN}
  148.  
  149. {:read_data}
  150.   {ROPE %datadir%CALLER.DAT,RD1}
  151.   {READ %callno}
  152.   {READ %tdcalls}
  153.   {READ pub}
  154.   {READ pvt}
  155.   {READ ttu}
  156.   {READ tf}
  157.   {READ ldate}
  158.   {READ stime}
  159.   {READ ftime}
  160.   {READ l_caller}
  161.   {READ luserno}
  162.   {READ uhigh}
  163.   {READ mhigh}
  164.   {READ fhigh}
  165.   {RCLO}
  166. {:RD1}  {RETURN}
  167.  
  168. {:write_data}
  169.   {WOPE %datadir%CALLER.DAT}
  170.   {WRIT %callno}
  171.   {WRIT %tdcalls}
  172.   {WRIT %pub}
  173.   {WRIT %pvt}
  174.   {WRIT %ttu}
  175.   {WRIT %tf}
  176.   {WRIT %ldate}
  177.   {WRIT %stime}
  178.   {WRIT %ftime}
  179.   {WRIT %login_name}
  180.   {WRIT %userno}
  181.   {WRIT %uhigh}
  182.   {WRIT %mhigh}
  183.   {WRIT %fhigh}
  184.   {WCLO}
  185.   {RETURN}
  186.  
  187. {:time_out}
  188.   {COMP open,yy}  {IFCO ,TKO}  {CALL E10}
  189. {:TKO}  {MACL MACROBBS.MAC,time_out}
  190.  
  191. {:cls}
  192.   {CLEA}
  193.   {COMP on,}  {IFCO CLS3}
  194.   {COMP mnu,A}  {IFCO CLS1}
  195.   {SEND ^[[2J}
  196.   {GOTO CLS2}
  197. {:CLS1} {SEND ^L}
  198. {:CLS2} {DISP 1,1,4F,│                                                                              }
  199.   {DISP 1,3,4E,%login_name #%userno}
  200.   {DISP 1,38,47,AL=%al}
  201.   {DISP 1,40,47,%mspeed}
  202.   {DISP 1,57,47,%_ela mins}
  203.   {DISP 1,70,4F,%an9%%chat}
  204.   {DISP 2,1,4F,└──────────────────────────────────────────────────────────────────────────────}
  205.   {DISP 3,1,07,}
  206. {:CLS3}  {RETURN}
  207.  
  208. {:press_any_key}
  209.   {COMP mnu,a}  {IFCO PAK1}
  210.   {SEND %an3%%an9^[[24;1h^[[24;1f[Press Any Key]%an0}
  211.   {GOTO PAK2}
  212. {:PAK1} {SEND ^J^M^J[Press Any Key]}
  213. {:PAK2} {SETG 240,time_out}
  214.   {GETS-H temp,1,PAK}
  215. {:PAK}  {SEND ^M               ^M}
  216.   {SETV temp}
  217.   {RETURN}
  218.  
  219. {:dsp_file}
  220.   {IFEX %dump_file,,DF5}
  221.   {SETV count,0}  {SETV open,y}
  222.   {INCR count,2}
  223.   {SETE time_out}
  224.   {ROPE %dump_file,DF3}
  225.   {READ dline}  {SEND %an7%To:    %an3%%dline^J^M}  {INCR count}
  226.   {READ dline}  {SEND %an7%From:  %an1%%dline^J^M}  {INCR count}
  227.   {READ dline}  {SEND %an7%Subj:  %an4%%dline^J^M}  {INCR count}
  228.   {READ dline}  {SEND %an7%Date:  %an0%%dline^J^M}  {INCR count}
  229.   {READ dline}
  230.   {COMP dline,0}  {IFCO DF11}
  231.   {COMP dline,}  {IFCO ,DF10}
  232.   {SEND %an0%%dline^J^M}  {INCR count}
  233. {:DF11}  {SETV trace}
  234.   {GOTO DF}
  235. {:DF10}  {SEND %an5%Trace msg#:  %an0%%dline^J^M}  {INCR count}
  236.   {SETV trace,%dline}
  237. {:DF}  {PUSH}
  238.   {SETE-P0 esc_menu}
  239. {:DF1}  {READ dline}
  240.   {COMP dline,&▀▀▀▀▀▀ Quote ▀▀▀▀▀▀}  {IFCO ,LQ1}
  241.   {SETV dline,%an4▀▀▀▀▀▀ %an7%Quote %an4▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀%an7}
  242.   {GOTO DF8}
  243. {:LQ1}  {COMP dline,&▄▄▄▄▄▄ UnQuote ▄▄▄▄▄▄}  {IFCO ,DF8}
  244.   {SETV dline,%an4▄▄▄▄▄▄ %an7%UnQuote %an4▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄%an0}
  245. {:DF8}  {SEND ^M%dline%%an0^J^M}
  246.   {INCR count}
  247.   {COMP count,22}  {IFCO DF4}
  248.   {GOTO DF1}
  249. {:DF2}  {RCLO}
  250. {:DF3}  {SETV dline}  {SETV ch}  {SETV count}
  251.   {SETV open}
  252.   {POPS}
  253.   {RETURN}
  254.  
  255. {:DF4}  {SETV count,0}
  256.   {SEND %an4%More? %an7(Y,n) %an0: }
  257.   {SETG 240,DF9}
  258. {:DF6}  {GETS-H ch,1,DF7}
  259.   {COMP ch,y}   {IFCO DF7}
  260.   {COMP ch,n}   {IFCO DF7}
  261.   {SEND ^H}  {GOTO DF6}
  262. {:DF7}  {SEND ^M                  ^M}
  263.   {COMP ch,n}   {IFCO DF2}
  264. {:DF9}  {CALL CLS}
  265.   {SEND ^J^M}
  266.   {GOTO DF1}
  267. {:DF5}  {SEND ^J^M^G%an1%Error: %an7%File not found: %dump_file}
  268.   {CALL press_any_key}
  269.   {RETURN}
  270.  
  271. {:screen_full}
  272.   {SEND %an4%More? %an7(Y,n) %an0: }
  273.   {SETG 120,SF3}
  274. {:SF1}  {GETS-H ch,1,SF2}
  275.   {COMP ch,y}   {IFCO SF4}
  276.   {COMP ch,n}   {IFCO SF4}
  277.   {SEND ^H}  {GOTO SF1}
  278. {:SF2}  {SETV ch,y}  {GOTO SF4}
  279. {:SF3}  {SETV ch,n}
  280. {:SF4}  {SEND ^M                  ^M}
  281.   {RETURN}
  282.  
  283. {:expert_tog}
  284.   {COMP expert,ON}
  285.   {IFCO ET1}
  286.   {SETV expert,ON}
  287.   {GOTO ET2}
  288. {:ET1}  {SETV expert,OFF}
  289. {:ET2}  {RETURN}
  290.  
  291. {:ansi}
  292.   {SETV mnu,n}
  293.   {SETV an0,^[[0;2;37m} - gray
  294.   {SETV an1,^[[0;1;31m} - red
  295.   {SETV an2,^[[0;2;32m} - green
  296.   {SETV an3,^[[0;1;33m} - yellow
  297.   {SETV an4,^[[0;1;34m} - blue
  298.   {SETV an5,^[[0;1;35m} - magenta
  299.   {SETV an6,^[[0;1;36m} - cyan
  300.   {SETV an7,^[[0;1;37m} - white
  301.   {SETV an9,^[[5m}      - blink
  302.   {SETV an12,^[[44m}    - blue background
  303.   {SETV an13,^[[41m}    - red background
  304.   {RETURN}
  305.  
  306. {:cd}
  307.   {IFCA cd1}
  308.   {COMP on,1}  {IFCO time_out}
  309. *-{:cd1}  {COMP on,1}  {IFCO ,cd2}
  310.   {COMP _ela,%tlc}  {IFCO-GE time_out}
  311. {:cd2}  {RETURN}
  312.  
  313. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  314. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  315. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  316. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  317. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
  318.  
  319. {:start}
  320.   {SETE-P0 esc_menu}
  321.   {PUSH}
  322.   {CALL cd}
  323. {:MB1}  {SETV n}  {SETV ta}
  324.   {CALL read_baseinfo}
  325.   {COMP expert,ON}  {IFCO MB4}
  326. {:MB8}  {CALL cls}
  327.   {SEND ^J^M^J^J%an4%}
  328.   {SEND ^J^M             ┌───────────────────────────────────────────────────┐}
  329.   {SEND ^J^M             │ %an0░░░░░░░░░░░░░░░░░░%an7 Message Base %an0░░░░░░░░░░░░░░░░░%an4 │}
  330.   {SEND ^J^M             └───────────────────────────────────────────────────┘}
  331.   {SEND ^J^M               [%an0%<%an4] Reverse       [%an0%A%an4] Area List       [%an0%>%an4] Forward^J^M}
  332.  
  333.   {SEND ^J^M          %an4[%an0%P%an4] Post in this area    [%an0%R%an4] ReviewScan       [%an0%F%an4] File Base}
  334.   {SEND ^J^M          %an4[%an0%N%an4] NewScan ALL areas    [%an0%C%an4] Chat             [%an0%H%an4] Hall of Fame}
  335.   {SEND ^J^M          %an4[%an0%T%an4] NewScan THIS area    [%an0%X%an4] Xpert Toggle     [%an0%Q%an4] MAIN MENU^J^M}
  336.  
  337.   {SEND ^J^M                      %an0 Enter a command or message number.}
  338.  
  339. {:MB4}  {SEND ^J^M^J%an4%Message Base^J^M}
  340.   {SEND %an4[%an2%%bname%%an4]  %an0%%_tim^J^M}
  341.   {DECR msgno}
  342.   {COMP msgno,%himsgno}  {IFCO-LE MB10}
  343.   {SETV msgno,%himsgno}
  344. {:MB10}  {SEND %an3%Msg(s): %an0%%lomsgno-%himsgno  %an1%Last read: %an0%%msgno^J^M}
  345.   {INCR msgno}
  346.   {SETV ch,%tlc}  {DECR ch,%_ela}
  347.   {SEND %an0%Mins Left: %ch^J^M}
  348. {:MB5}  {CALL cd}
  349. {:MB7}  {SEND ^M}  {COMP expert,ON} {IFCO ,MB9}
  350.   {SEND %an4(%an0%?%an4=menu) }
  351. {:MB9}  {SEND %an7%MB Command:         ^H^H^H^H^H^H^H^H}
  352.   {SETE-P0 esc_menu}
  353.   {SETG 240,time_out}
  354.   {GETS-H ch,1,MB5}
  355. {:MB14}
  356.   {SETV dline,ph}  {INST dline,%ch}  {IFCO ,MB3}  {COMP al,0}  {IFCO MB6}
  357. {:MB3}
  358.   {SETE-P0 esc_menu}
  359.   {COMP ch,*}  {IFCO time_out}
  360.   {COMP ch,?}  {IFCO MB8}
  361.   {COMP ch,a}  {IFCO area_change}
  362.   {COMP ch,c}  {IFCO chat}
  363.   {COMP ch,f}  {IFCO file_tran}
  364.   {COMP ch,h}  {IFCO hall}
  365.   {COMP ch,p}  {IFCO editor}
  366.   {COMP ch,q}  {IFCO MB2}
  367.   {COMP ch,r}  {IFCO review}
  368.   {COMP ch,x}  {IFCO expert_tog}
  369.   {COMP ch,<}  {IFCO fast_bak}
  370.   {COMP ch,>}  {IFCO fast_for}
  371.   {SETE time_out}
  372.   {COMP ch,n}  {IFCO new_all}
  373.   {COMP ch,t}  {IFCO new_this}
  374.   {SETV dline,123456789}
  375.   {INST dline,%ch}  {IFCO ,MB5}
  376.   {COMP himsgno,0}  {IFCO MB5}
  377.  
  378.   {GETS-A ch,8,MB5}
  379.   {COMP ch,1}  {IFCO MB13}
  380.   {COMP ch,1}  {IFCO-L MB14}
  381.   {COMP ch,%lomsgno}  {IFCO-GE MB11}
  382. {:MB13}  {SETV ch,%lomsgno}  {GOTO MB12}
  383. {:MB11}  {COMP ch,%himsgno}  {IFCO-LE MB12}
  384.   {SETV ch,%himsgno}
  385. {:MB12}  {IFEX %msgsdir%A%a\%ch.MSG,read}
  386.   {SEND ^J^M%an7%Message #%ch not found.}  {PAUS 1}
  387.   {INCR ch}  {GOTO MB11}
  388.  
  389. {:MB6}  {SEND ^J^M%an1%Sorry, your access level does not allow.^J^M}
  390.   {GOTO MB5}
  391.  
  392. {:MB2}  {SETV quotemsg}  {SETV trace}
  393.   {MACL MACROBBS.MAC,main_menu}
  394.  
  395. {:file_tran}
  396.   {IFEX %filedir%F%fa.BAS,FX2}
  397.   {IFEX %filedir%F*.BAS,,MB5}
  398.   {SETV fa,0}
  399. {:FX1}  {INCR fa}
  400.   {COMP fa,%fhigh}  {IFCO-G MB5}
  401.   {IFEX %filedir%F%fa.BAS,,FX1}
  402. {:FX2}
  403.   {ROPE %filedir%F%fa.BAS,FX1}  {READ ch}  {READ ch}  {RCLO}
  404.   {COMP ch,%al}  {IFCO-G FX1}
  405.   {MACL MACROFIL.MAC,start}
  406.  
  407. {:hall}
  408.   {SETV quotemsg}  {SETV trace}
  409.   {MACL MACROREG.MAC,start}
  410.  
  411. {:fast_for}
  412.   {COMP a,%mhigh}  {IFCO MB5}
  413.   {SETV ch,%a}
  414. {:FF1}  {INCR ch}
  415.   {COMP ch,%mhigh}  {IFCO-G MB5}
  416.   {IFEX %msgsdir%A%ch.BAS,,FF1}
  417.   {ROPE %msgsdir%A%ch.BAS,FF1}  {READ dline}  {READ temp}  {RCLO}
  418.   {COMP al,%temp}  {IFCO-L FF1}
  419.   {SETV a,%ch}
  420.   {CALL read_baseinfo}
  421. {:FF2}  {GOTO MB4}
  422.  
  423. {:fast_bak}
  424.   {COMP a,1}  {IFCO MB5}
  425.   {SETV ch,%a}
  426. {:FB1}  {DECR ch}
  427.   {COMP ch,1}  {IFCO-L MB5}
  428.   {IFEX %msgsdir%A%ch.BAS,,FB1}
  429.   {ROPE %msgsdir%A%ch.BAS,FB1}  {READ dline}  {READ temp}  {RCLO}
  430.   {COMP al,%temp}  {IFCO-L FB1}
  431.   {SETV a,%ch}
  432.   {CALL read_baseinfo}
  433. {:FB2}  {GOTO MB4}
  434.  
  435. {:area_change}
  436.   {CALL cls}
  437.   {SETV count,0}  {SETV aa,%a}
  438.   {SEND ^J^M%an3%Message Menagerie...^J^M^J}
  439. {:AC1}  {INCR count}
  440.   {COMP count,%mhigh}  {IFCO-G AC2}
  441.   {IFEX %msgsdir%A%count.BAS,,AC1}
  442.   {ROPE %msgsdir%A%count.BAS,AC1}  {READ %bname}  {READ %bal}  {RCLO}
  443.   {COMP al,%bal}  {IFCO-L AC1}
  444.   {SEND %an7%%count> %an2%%bname^J^M}
  445.   {GOTO AC1}
  446. {:AC2}  {SEND ^J^M}
  447. {:AC3}  {SEND ^M%an7%Which will it be?%an0   ^H^H}
  448.   {SETG 120,time_out}
  449.   {CALL cd}
  450.   {GETS ch,2,AC4}
  451.   {COMP ch,1}  {IFCO-L AC3}
  452.   {COMP ch,%mhigh}  {IFCO-G AC3}
  453.   {IFEX %msgsdir%A%ch.BAS,,AC3}
  454.   {ROPE %msgsdir%A%ch.BAS,AC3}  {READ bname}  {READ bal}  {RCLO}
  455.   {COMP al,%bal}  {IFCO-L AC3}
  456.   {SETV a,%ch}
  457.   {CALL read_baseinfo}
  458. {:AC4}  {RETURN}
  459.  
  460. {:review}
  461.   {SEND ^J^M^J}
  462. {:RE1}  {SEND %an4%Begin reviewing at which message? %an0(%lomsgno-%himsgno) :%an7         ^H^H^H^H^H^H^H^H}
  463.   {GETS ch,8,MB1}
  464.   {COMP ch,1}  {IFCO-L RE1}
  465.   {COMP ch,%lomsgno}  {IFCO-GE RE13}
  466.   {SETV ch,%lomsgno}  {GOTO RE14}
  467. {:RE13}  {COMP ch,%himsgno}  {IFCO-LE RE14}
  468.   {SETV ch,%himsgno}
  469. {:RE14}  {IFEX %msgsdir%A%a\%ch.MSG,RE15}
  470.   {SEND ^J^M%an7%Message #%ch not found.}  {PAUS 1}
  471.   {INCR ch}  {GOTO RE13}
  472. {:RE15}  {DECR ch}
  473. {:RE4}  {INCR ch}  {COMP ch,%himsgno}  {IFCO-G RE3}
  474. {:RE2}  {IFEX %msgsdir%A%a\%ch.MSG,,RE4}
  475. {:RE5}  {CALL cls}
  476.   {SEND %an7%Msg#     To:                       From:                     Subject:}
  477.   {SEND ^J^M----------------------------------------------------------------------------^J^M-
  478.   {SETV temp,0}
  479. {:RE7}  {INCR temp}
  480.   {ROPE %msgsdir%A%a\%ch.MSG,RE8}
  481.   {SETV mx,9}  {SETV dline,%ch}
  482.   {LENG %dline}  {DECR mx,%_len}  {SUBS cline,1,%mx,         }
  483.   {SEND ^M%an0%%dline%%cline}
  484.   {SETV mx,26}
  485.   {READ dline}  {SUBS dline,1,25,%dline}
  486.   {LENG %dline}  {DECR mx,%_len}  {SUBS cline,1,%mx,                         }
  487.   {SEND %an3%%dline%%cline}
  488.   {SETV mx,26}
  489.   {READ dline}  {SUBS dline,1,25,%dline}
  490.   {LENG %dline}  {DECR mx,%_len}  {SUBS cline,1,%mx,                         }
  491.   {SEND %an1%%dline%%cline}
  492.   {SETV mx,18}
  493.   {READ dline}  {SUBS dline,1,18,%dline}
  494.   {LENG %dline}  {DECR mx,%_len}  {SUBS cline,1,%mx,                         }
  495.   {SEND %an4%%dline%%cline^J^M}
  496.   {RCLO}
  497. {:RE8}  {INCR ch}  {COMP ch,%himsgno}  {IFCO-G RE9}
  498.   {IFEX %msgsdir%A%a\%ch.MSG,,RE8}
  499.   {COMP temp,20}  {IFCO RE11}
  500.   {GOTO RE7}
  501. {:RE11}  {SETV aa,%ch}
  502.   {CALL screen_full}
  503.   {COMP ch,y}  {IFCO RE12}
  504.   {COMP expert,ON}  {IFCO MB4,MB8}
  505. {:RE12}  {SETV ch,%aa}
  506.   {GOTO RE5}
  507. {:RE6}  {IFEX %msgsdir%A%a\%ch.MSG,RE5}
  508. {:RE3}  {SEND ^J^M%an1%That message does not exist.^J^M}
  509.   {GOTO RE1}
  510. {:RE9}  {SEND ^J^M%an7%<End of messages in %an5%%bname%%an7>}
  511. {:RE10}  {COMP expert,ON}  {IFCO MB4}
  512.   {CALL press_any_key}
  513.   {GOTO MB8}
  514.  
  515. {:trace}
  516.   {COMP trace,}  {IFCO TR1}
  517.   {SEND race}
  518.   {INST trace,/}  {IFCO ,TR1}
  519.   {SETV ch,%_pos}  {DECR ch}
  520.   {SUBS temp,1,%ch,%trace}
  521.   {SETV ch,%_pos}  {INCR ch}
  522.   {SUBS dline,%ch,8,%trace}
  523. {:TR3}  {SETV dump_file,%msgsdir%A%temp\%dline.MSG}
  524.   {IFEX %dump_file,,TR1}
  525.   {CALL cls}
  526.   {SEND ^J^M%an7%TRACE:  %an0%Msg# %dline in area %temp^J^M^J}
  527.   {CALL dsp_file}
  528.   {SEND ^J^M^J%an0<%an7%SPACEBAR %an0= Trace this message, %an7%ENTER %an0= quit Trace> }
  529. {:TR4}  {GETS-H ch,1,FW50}
  530.   {COMP ch, }  {IFCO trace}
  531.   {SEND ^H}  {GOTO TR4}
  532. {:TR2}  {SETV temp,%a}  {SETV dline,%trace}  {GOTO TR3}
  533. {:TR1}  {SEND ^J^M^J%an1%Can't trace message.^J^M}  {PAUS 1}  {GOTO FW50}
  534.  
  535. {:new_all}
  536.   {PUSH FW6}
  537.   {SETV n,1}  {SETV ta,%a}  {SETV a,0}
  538.   {GOTO FW20}
  539.  
  540. {:new_this}
  541.   {PUSH FW6}
  542.   {COMP msgno,%himsgno}  {IFCO-G ,FW2}
  543.   {SEND ^J^M^J%an7<End of messages in %an5%%bname%%an7>^J^M^J}
  544.   {POPS}
  545.   {GOTO MB5}
  546.  
  547. {:read}
  548.   {PUSH FW6}
  549.   {SETV msgno,%ch}
  550. {:FW2}  {COMP msgno,%lomsgno}  {IFCO-GE FW24}
  551.   {INCR msgno}  {GOTO FW2}
  552. {:FW24}  {COMP msgno,%himsgno}  {IFCO-G FW11}
  553.   {IFEX %msgsdir%A%a\%msgno.MSG,FW21}
  554.   {INCR msgno}  {GOTO FW2}
  555. {:FW21}  {INCR reads}
  556. {:FW19}  {CALL cls}
  557.   {SETV dump_file,%msgsdir%A%a\%msgno.MSG}
  558.   {SEND ^J^M%an0%Msg# %msgno of %himsgno in %an2%%bname^J^M^J}
  559.   {CALL dsp_file}
  560.   {SETE time_out}
  561.   {INCR msgno}
  562.  
  563. {:FW6}
  564.   {DECR msgno}
  565.   {SEND ^J^M%an7[%msgno/%himsgno] %an2%%bname}
  566.   {INCR msgno}
  567.   {SETV ch,%tlc}  {DECR ch,%_ela}
  568.   {SEND ^J^M%an0%Mins Left: %ch}
  569.   {SEND ^J^M%an3%Read Menu%an0:  %an7%R%an0%eply, %an7%P%an0%rev, %an7%A%an0%gain, %an7%N%an0%ext, %an7%T%an0%race, %an7%J%an0%ump}
  570.   {COMP al,%sal}  {IFCO-L FW26}
  571.   {SEND , %an7%S%an0%ysop}
  572. {:FW26}  {SEND  or %an7%Q%an0%uit?%an3 }
  573.   {SETG 300,time_out}
  574. {:FW14}  {CALL cd}
  575.   {GETS-H ch,1,FW2}
  576.   {COMP ch,r}  {IFCO ,FW17}  {COMP al,0}  {IFCO FW18}
  577. {:FW17}  {COMP ch,a}  {IFCO FW1}
  578.   {COMP ch,n}  {IFCO FW16}
  579.   {COMP ch,p}  {IFCO FW4}
  580.   {COMP ch,r}  {IFCO FW5}
  581.   {COMP ch,j}  {IFCO FW22}
  582.   {COMP ch,s}  {IFCO FW27}
  583.   {COMP ch,t}  {IFCO trace}
  584.   {COMP ch,q}  {IFCO FW8}
  585. {:FW}  {SEND ^H}  {GOTO FW14}
  586. {:FW18}  {SEND ^J^M%an1%Sorry, your access level does not allow.}
  587.   {GOTO FW6}
  588. {:FW1}  {SEND gain}
  589. {:FW50}  {DECR msgno}
  590.   {GOTO FW19}
  591. {:FW16}  {SEND ext}
  592.   {GOTO FW2}
  593. {:FW4}  {SEND revious}
  594.   {SETV temp,%lomsgno}  {INCR temp}
  595. {:FW25}  {COMP msgno,%temp}  {IFCO ,FW10}
  596.   {SEND ^J^M%an7<Beginning of messages in %an5%%bname%%an7>^J^M}  {GOTO FW6}
  597. {:FW10}  {DECR msgno,2}
  598.   {IFEX %msgsdir%A%a\%msgno.MSG,FW21}
  599.   {INCR msgno}  {GOTO FW25}
  600. {:FW22}  {SEND ump^J^M^J}
  601. {:FW23}  {SEND ^M%an4%Enter a message number to jump to. %an0(%lomsgno-%himsgno) : %an3        ^H^H^H^H^H^H^H^H}
  602.   {SETG 120,FW6}
  603.   {GETS ch,8,FW6}
  604.   {COMP ch,1}  {IFCO-L FW23}
  605.   {COMP ch,%lomsgno}  {IFCO-GE FW47}
  606.   {SETV ch,%lomsgno}  {GOTO FW48}
  607. {:FW47}  {COMP ch,%himsgno}  {IFCO-LE FW48}
  608.   {SETV ch,%himsgno}
  609. {:FW48}  {IFEX %msgsdir%A%a\%ch.MSG,FW49}
  610.   {SEND ^J^M%an7%Message #%ch not found.}  {PAUS 1}
  611.   {INCR ch}  {GOTO FW47}
  612. {:FW49}  {SETV msgno,%ch}
  613.   {GOTO FW2}
  614. {:FW5}  {SEND eply^J^M}
  615.   {DECR msgno}
  616.   {SETV r,1}  {SETV trace,%a/%msgno}
  617.   {SETV quotemsg,%msgsdir%A%a\%msgno.MSG}
  618.   {ROPE %quotemsg,FW6}
  619.   {READ dline}  {READ to}  {READ subj}  {RCLO}
  620.   {INCR msgno}
  621.   {CALL editor}
  622.   {GOTO FW6}
  623. {:FW8}  {SEND uit^J^M}
  624.   {CALL update_index}
  625. {:FW9}  {POPS}
  626. {:FW3}  {RETURN}
  627.  
  628. {:FW11}  {COMP n,1}  {IFCO ,FW15}
  629.   {SEND ^J^M^J%an7<Finished scanning %an5%%bname%%an7>^J^M}
  630.   {CALL update_index}
  631. {:FW20}  {INCR a}
  632.   {COMP a,%mhigh}  {IFCO-G FW13}
  633.   {IFEX %msgsdir%A%a.BAS,,FW20}
  634.   {ROPE %msgsdir%A%a.BAS,FW20}  {READ bname}  {READ bal}  {RCLO}
  635.   {COMP al,%bal}   {IFCO-L FW20}
  636.   {CALL read_baseinfo}
  637.   {CALL cls}
  638.   {SEND ^J^M^J%an0  New Scanning %an2%%bname}  {PAUS 1}
  639.   {COMP msgno,%himsgno}  {IFCO-G FW20,FW2}
  640. {:FW13} {SETV a,%ta}  {SETV ta}
  641.   {CALL cls}
  642.   {SEND ^J^M^J%an7<End of available messages>^J^M}
  643.   {COMP expert,ON}  {IFCO FW9}
  644.   {CALL press_any_key}
  645.   {GOTO FW9}
  646. {:FW15}  {SEND ^J^M%an7<End of messages in %an5%%bname%%an7>^J^M}
  647.   {CALL update_index}
  648.   {GOTO FW9}
  649.  
  650. {:FW27}  {SEND ysop^J^M}
  651. {:FW28}  {SEND ^J^M%an1%Sysop Menu%an0:  %an7%D%an0%elete,%an7 E%an0%dit,%an7 M%an0%ove or%an7 Q%an0%uit? %an1}
  652. {:FW29}  {CALL cd}
  653.   {GETS-H ch,1,FW30}
  654.   {COMP ch,d}  {IFCO FW31}
  655.   {COMP ch,e}  {IFCO FW45}
  656.   {COMP ch,m}  {IFCO FW40}
  657.   {COMP ch,q}  {IFCO FW30}
  658.   {SEND ^H}    {GOTO FW29}
  659.  
  660. {:FW30}  {SEND ^J^M}  {GOTO FW6}
  661. {:FW31}  {SEND elete^J^M}
  662.   {SEND ^J^M%an7%DELETE %an1%this message? %an0(y,%an7%N%an0) :%an1 }
  663. {:FW32}  {GETS ch,1,FW28}
  664.   {COMP ch,n}  {IFCO FW28}
  665.   {COMP ch,y}  {IFCO FW33}
  666.   {SEND ^H}    {GOTO FW32}
  667. {:FW33}  {SEND ^J^M}
  668.   {DECR msgno}
  669.   {EXEC-N DEL %msgsdir%A%a\%msgno.MSG}
  670.   {CALL renumber}
  671.   {INCR msgno}
  672.   {SEND %an7%Message deleted.}  {PAUS 1}
  673.   {GOTO FW2}
  674.  
  675. {:FW40}  {SEND ove^J^M^J}
  676. {:FW41}  {SEND ^M%an7%MOVE %an3%this message to which message area? %an0(1-%mhigh, ENTER=quit) :%an3   ^H^H}
  677.   {GETS ch,2,FW28}
  678.   {COMP ch,1}  {IFCO-L FW41}
  679.   {COMP ch,%a}  {IFCO FW41}
  680.   {COMP ch,%mhigh}  {IFCO-G FW41}
  681.   {IFEX %msgsdir%A%ch.BAS,,FW41}
  682.   {ROPE %msgsdir%A%ch.BAS,FW41}
  683.   {READ dline}  {READ temp}  {RCLO}
  684.   {COMP temp,%al}  {IFCO-G FW41}
  685.   {ROPE %msgsdir%A%ch.BAS,FW41}
  686.   {READ dline}  {READ temp}  {READ temp}  {READ temp}  {READ temp}  {RCLO}
  687.   {INCR temp}
  688.   {SEND ^J^M^J%an7%Move this message to %an3%%dline%%an7? %an0(y,%an7%N%an0) : }
  689. {:FW42}  {GETS aa,1,FW43}
  690.   {COMP aa,n}  {IFCO FW43}
  691.   {COMP aa,y}  {IFCO FW44}
  692.   {SEND ^H}    {GOTO FW42}
  693. {:FW43}  {SEND ^J^M^J}  {GOTO FW41}
  694. {:FW44}  {SEND ^J^M%an3%Moving message...}
  695.   {DECR msgno}
  696.   {EXEC-N COPY %msgsdir%A%a\%msgno.MSG %msgsdir%A%ch\%temp.MSG}
  697.   {EXEC-N DEL %msgsdir%A%a\%msgno.MSG}
  698.   {CALL renumber}
  699.   {SETV temp,%msgno}  {SETV aa,%a}  {SETV a,%ch}
  700.   {CALL read_baseinfo}
  701.   {INCR %himsgno}
  702.   {CALL update_baseinfo}
  703.   {CALL del_xs}
  704.   {SETV a,%aa}  {SETV aa}
  705.   {CALL read_baseinfo}
  706.   {SETV msgno,%temp}
  707.   {INCR msgno}
  708.   {GOTO FW2}
  709.  
  710. {:renumber}
  711.   {COMP lomsgno,%himsgno}  {IFCO ,FW34}
  712.   {SETV lomsgno,1}  {SETV himsgno,0}  {SETV msgno,0}  {GOTO FW37}
  713. {:FW34}  {COMP msgno,%himsgno}  {IFCO ,FW35}
  714. {:FW36}  {DECR himsgno}  {DECR msgno}
  715.   {IFEX %msgsdir%A%a\%himsgno.MSG,FW37,FW36}
  716. {:FW35}  {COMP msgno,%lomsgno}  {IFCO ,FW38}
  717. {:FW39}  {INCR lomsgno}
  718.   {IFEX %msgsdir%A%a\%lomsgno.MSG,,FW39}
  719. {:FW37}  {CALL update_baseinfo}
  720. {:FW38}  {RETURN}
  721.  
  722. {:FW45}  {SEND dit^J^M}
  723.   {DECR msgno}
  724.   {COMP mspeed,LOCAL}  {IFCO ,FW46}
  725.   {EDIT %msgsdir%A%a\%msgno.MSG}
  726.   {GOTO FW19}
  727. {:FW46}  {SETV em,1}
  728.   {SETV dump_file,%msgsdir%A%a\%msgno.MSG}
  729.   {SETV lineno,0}
  730.   {SEND %an0%Loading...}
  731.   {ROPE %dump_file,CL1}
  732.   {READ edline}  {READ edline}  {READ edline}
  733.   {READ edline}  {READ edline}  {READ edline}
  734. {:CL2}  {READ edline}
  735.   {INCR lineno}  {GOTO CL2}
  736. {:CL1}  {WOPE-A %dump_file}
  737.   {GOTO edit_system}
  738.  
  739. {:editor}
  740.   {CALL cls}
  741.   {INCR himsgno}
  742.   {SETV dump_file,%msgsdir%A%a\%himsgno.MSG}
  743.   {COMP r,1}  {IFCO E1}
  744.   {SETV trace,0}
  745.   {SETV to,Everyone}
  746. {:E1}  {SEND ^J^M%an0      (Press ENTER for "%an7%%to%%an0")^J^M}
  747.   {SEND %an7%To  : %an12                              ^M}
  748.   {SEND %an7%To  : %an12}
  749.   {SETG 120,time_out}
  750.   {CALL cd}
  751.   {GETS t,30,E12}
  752.   {SETV to,%t}
  753. {:E2}   {SEND ^J^M^J}  {COMP r,1}  {IFCO ,E3}
  754.   {SEND %an0      (Press ENTER for "%an7%%subj%%an0")^J^M}
  755. {:E3}   {SEND ^M%an7%Subj: %an12                              ^M}
  756.   {SEND %an7%Subj: %an12}
  757.   {COMP r,1}  {IFCO ,E5}
  758.   {CALL cd}
  759.   {GETS sub,30,E13}
  760.   {SETV %subj,%sub}  {SETV sub}
  761.   {SEND ^J^M}
  762.   {GOTO E6}
  763. {:E5}  {SETG 120,time_out}
  764.   {CALL cd}
  765.   {GETS subj,30,E3}
  766.   {SEND ^J^M}
  767. {:E6}  {WOPE %dump_file}
  768.   {SETV open,yy}
  769.   {WRIT %to}
  770.   {SEND ^J^M%an4%Anonymous? %an0(y,%an7%N%an0) : }
  771. {:AN}  {GETS-H ch,1,AN1}
  772.   {COMP ch,n}  {IFCO AN1}
  773.   {COMP ch,y}  {IFCO AN2}
  774.   {SEND ^H}  {GOTO AN}
  775. {:AN1}  {WRIT %login_name}  {GOTO AN3}
  776. {:AN2}  {WRIT [anonymous]}
  777. {:AN3}  {WRIT %subj}
  778.   {WRIT %_dat %_tim}
  779.   {WRIT %trace}  {SETV trace}
  780.   {WRIT }
  781.   {SETV lineno,0}
  782.   {SEND ^J^M^J%an7%Maximum of %max lines.^J^M}
  783.   {SEND %an1-------------%an0 /s - save %an1-------%an0 /e - editor %an1-------%an0 /abt - abort %an1--------------^J^M}
  784.   {COMP r,1}  {IFCO ,E4}
  785.   {SEND %an1-------------------------------%an0 /q - quoter %an1-----------------------------------^J^M}
  786. {:E4}  {SETV dline}
  787. {:E7}  {SEND ^J^M%an3%%dline}
  788.   {SETG 240,E10}
  789.   {GETS-AH dline,78,E18}
  790.   {COMP dline,/e}  {IFCO edit_system}
  791.   {COMP dline,/q}  {IFCO quote}
  792.   {COMP dline,/s}  {IFCO E9}
  793.   {COMP dline,/abt}  {IFCO E10}
  794.   {SETV dline, %dline}
  795.   {LENG %dline}  {COMP %_len,78}  {IFCO-LE E8}
  796.   {SETV ccount,80}   {SETV temp,0}
  797. {:E15}  {DECR ccount}  {INCR temp}
  798.   {COMP ccount,60}  {IFCO-LE E8}
  799.   {SUBS ch,%ccount,1,%dline}
  800.   {COMP ch, }  {IFCO ,E15}
  801.   {COMP ccount,79}  {IFCO E8}
  802.   {SETV ch,0}
  803. {:E16}  {INCR ch}  {SEND ^H}
  804.   {COMP ch,%temp}  {IFCO ,E16}
  805.   {SETV ch,78}  {DECR ch,%temp}
  806.   {SUBS cline,2,%ch,%dline}
  807.   {WRIT %cline}   {SETV cline}
  808.   {INCR ccount}
  809.   {SUBS dline,%ccount,%temp,%dline}
  810.   {INCR lineno}  {COMP lineno,%max}  {IFCO-LE E7,E17}
  811. {:E8}   {SUBS dline,2,100,%dline}
  812. {:E18}  {WRIT %dline}
  813.   {INCR lineno}  {COMP lineno,%max}  {IFCO-LE E4}
  814. {:E17}  {SEND ^J^M%an7%You have reached the line limit.^J^M}  {GOTO edit_system}
  815. {:E9}  {WCLO}
  816.   {SEND ^J^M%an1%Saving}
  817.   {COMP em,1}  {IFCO E11}
  818.   {SEND  #%himsgno...}
  819.   {CALL read_data}
  820.   {INCR pub}
  821.   {SETV ftime,%_tim}
  822.   {CALL write_data}
  823.   {WOPE-A %datadir%LOG-1.LOG}  {WRIT %_tim : Posted "%subj" on %bname%%an0}  {WCLO}
  824.   {CALL update_baseinfo}
  825.   {CALL del_xs}
  826.   {GOTO E11}
  827. {:E10}  {WCLO}
  828.   {EXEC-N DEL %dump_file}
  829.   {SEND ^J^M%an1%Message aborted and deleted.^J^M}  {PAUS 1}
  830.   {DECR himsgno}
  831.  
  832. {:E11}  {SETV r}  {SETV dline}  {SETV open}  {SETV subj}  {SETV to}
  833.   {SETV trace}  {SETV lineno}
  834.   {COMP em,1}  {SETV em}  {IFCO FW19}
  835.   {RETURN}
  836.  
  837. {:E12}  {SEND %to}
  838.   {GOTO E2}
  839. {:E13}  {SEND %subj^J^M}
  840.   {GOTO E6}
  841.  
  842. {:del_xs}
  843.   {COMP %maxmsg,0}  {IFCO E21}
  844.   {COMP himsgno,%maxmsg}  {IFCO-LE E21}
  845.   {SETV ch,%himsgno}  {DECR ch,%maxmsg}
  846. {:E19}  {IFEX %msgsdir%A%a\%lomsgno.MSG,,E20}
  847.   {EXEC-N DEL %msgsdir%A%a\%lomsgno.MSG}
  848. {:E20}  {INCR lomsgno}
  849.   {COMP lomsgno,%ch}  {IFCO-LE E19}
  850.   {CALL update_baseinfo}
  851. {:E21}  {SEND %an0%Ok}
  852.   {RETURN}
  853.  
  854. {:update_index}
  855.   {IFEX %msgsdir%A%a.IND,,UIX5}
  856.   {SEND %an0%Updating index...}
  857.   {ROPE %msgsdir%A%a.IND,UIX4}
  858.   {WOPE %datadir%TEMP.000}
  859.   {SETV mic,0}
  860. {:UIX1}  {INCR mic}  {READ mi}
  861.   {COMP mic,%userno}  {IFCO UIX2}
  862.   {WRIT %mi}   {GOTO UIX1}
  863. {:UIX2}  {WRIT %msgno}
  864. {:UIX3}  {READ mi}  {WRIT %mi}   {GOTO UIX3}
  865. {:UIX4}  {WCLO}
  866.   {EXEC-N COPY %datadir%TEMP.000 %msgsdir%A%a.IND}
  867.   {SETV mic}  {SETV mi}
  868. {:UIX5}  {RETURN}
  869.  
  870. {:update_baseinfo}
  871.   {WOPE %msgsdir%A%a.BAS}
  872.   {WRIT %bname}
  873.   {WRIT %bal}
  874.   {WRIT %maxmsg}
  875.   {WRIT %lomsgno}
  876.   {WRIT %himsgno}
  877.   {WCLO}
  878.   {RETURN}
  879.  
  880. {:read_baseinfo}
  881.   {ROPE %msgsdir%A%a.BAS,RB1}
  882.   {READ bname}
  883.   {READ bal}
  884.   {READ maxmsg}
  885.   {READ lomsgno}
  886.   {READ himsgno}
  887.   {RCLO}
  888.   {ROPE %msgsdir%A%a.IND,RB1}
  889.   {SETV mic,0}
  890. {:RB2}  {READ msgno}  {INCR mic}
  891.   {COMP mic,%userno}  {IFCO ,RB2}
  892.   {RCLO}
  893. {:RB1}  {SETV mic}
  894.   {RETURN}
  895.  
  896. {:find_line}
  897.   {SEND %an7%Searching...}
  898.   {ROPE %datadir%RTEMP.000,FL7}
  899.   {READ edline}  {READ edline}  {READ edline}
  900.   {READ edline}  {READ edline}  {READ edline}
  901.   {SETV ccount,0}
  902. {:FL6}  {INCR ccount}
  903.   {READ edline}
  904.   {COMP ccount,%fline}  {IFCO ,FL6}
  905.   {RCLO}
  906. {:FL7}  {SEND ^M              ^M}
  907.   {COMP edline,&▀▀▀▀▀▀ Quote ▀▀▀▀▀▀}  {IFCO ,FL8}
  908.   {SETV edline,%an4▀▀▀▀▀▀ %an7%Quote %an4▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀%an7}
  909.   {GOTO FL9}
  910. {:FL8}  {COMP edline,&▄▄▄▄▄▄ UnQuote ▄▄▄▄▄▄}  {IFCO ,FL9}
  911.   {SETV edline,%an4▄▄▄▄▄▄ %an7%UnQuote %an4▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄%an0}
  912. {:FL9}  {RETURN}
  913.  
  914. {:line_update}
  915.   {SEND %an7%Updating...}
  916.   {ROPE %datadir%RTEMP.000,FL3}
  917.   {WOPE %datadir%WTEMP.000}
  918.   {READ dline}  {WRIT %dline}  {READ dline}  {WRIT %dline}
  919.   {READ dline}  {WRIT %dline}  {READ dline}  {WRIT %dline}
  920.   {READ dline}  {WRIT %dline}  {READ dline}  {WRIT %dline}
  921.   {COMP t,2}  {IFCO ,FL}
  922.   {COMP ccount,0}  {IFCO FL5}
  923. {:FL}   {SETV temp,0}
  924. {:FL0}  {INCR temp}
  925.   {READ dline}
  926.   {COMP temp,%ccount}  {IFCO FL1}
  927.   {WRIT %dline}
  928.   {GOTO FL0}
  929. {:FL1}  {COMP t,1}  {IFCO FL4}
  930.   {COMP t,2}  {IFCO ,FL5}
  931.   {WRIT %dline}
  932. {:FL5}  {WRIT %edline}
  933. {:FL2}  {INCR ccount}
  934. {:FL4}  {READ dline}  {WRIT %dline}
  935.   {GOTO FL2}
  936. {:FL3}  {WCLO}
  937.   {EXEC-N COPY %datadir%WTEMP.000 %datadir%RTEMP.000}
  938.   {SETV dline}
  939.   {SEND ^M              ^M}
  940.   {RETURN}
  941.  
  942. {:edit_system}
  943.   {SEND ^M%an0%Loading...}
  944.   {WCLO}
  945.   {EXEC-N COPY %dump_file %datadir%WTEMP.000}
  946.   {EXEC-N COPY %datadir%WTEMP.000 %datadir%RTEMP.000}
  947.   {SEND ^M                ^M}
  948. {:ES4}  {SETV t}
  949.   {SEND ^J^M%an1%Editor: %an7%A%an0%bort,%an7%C%an0%ont,%an7%D%an0%elete,%an7%E%an0%dit,%an7%I%an0%nsert,%an7%L%an0%ist,%an7%R%an0%eplace,%an7%S%an0%ave: %an3}
  950. {:ES1}  {SETG 120,time_out}
  951.   {GETS-H ch,1,ES1}
  952.   {COMP ch,a}  {IFCO abort}
  953.   {COMP ch,c}  {IFCO continue}
  954.   {COMP ch,d}  {IFCO delete}
  955.   {COMP ch,e}  {IFCO edit_line}
  956.   {COMP ch,i}  {IFCO insert}
  957.   {COMP ch,l}  {IFCO list}
  958.   {COMP ch,r}  {IFCO replace}
  959.   {COMP ch,s}  {IFCO save}
  960. {:ES3}  {SEND ^H}   {GOTO ES1}
  961.  
  962. {:abort}
  963.   {COMP em,1}  {IFCO ES3}
  964.   {SEND bort^J^M}
  965.   {SETV edline}  {SETV fline}
  966.   {EXEC-N DEL %datadir%?TEMP.000}
  967.   {WOPE %dump_file}
  968.   {GOTO E10}
  969.  
  970. {:continue}
  971.   {COMP lineno,%max}  {IFCO-G ES3}
  972.   {SEND ontinue^J^M}
  973.   {SEND %an7%One moment...}
  974.   {EXEC-N COPY %datadir%WTEMP.000 %dump_file}
  975.   {SEND ^M%an7%Ok.  Carry on...  :)%an3^J^M}
  976.   {WOPE-A %dump_file}
  977.   {GOTO E4}
  978.  
  979. {:delete}
  980.   {SEND elete^J^M^J}
  981. {:D5}  {SEND ^M%an4%Line # to DELETE:%an0    ^H^H^H}
  982.   {GETS fline,3,R1}
  983.   {COMP fline,1}  {IFCO-L D5}
  984.   {COMP fline,%lineno}  {IFCO-G D5}
  985.   {SEND ^J^M}
  986.   {CALL find_line}
  987.   {SEND ^J^M%an0%%edline^J^M}
  988.   {SEND ^J^M%an7%DELETE this line? %an0(%an7%Y%an0,n) :%an7 }
  989. {:D3}   {GETS-H ch,1,D4}
  990.   {COMP ch,y}  {IFCO D4}
  991.   {COMP ch,n}  {IFCO R1}
  992.   {SEND ^H}  {GOTO D3}
  993. {:D4}  {SEND ^J^M}
  994.   {SETV edline}
  995.   {SETV t,1}  {CALL line_update}  {DECR lineno}
  996.   {SEND %an0%Line deleted.^J^M}
  997. {:D1}   {GOTO ES4}
  998. {:D2}   {SEND ^H}  {GOTO D3}
  999.  
  1000. {:edit_line}
  1001.   {SEND dit^J^M^J}
  1002. {:EL5}  {SEND ^M%an4%Line # to EDIT:%an0    ^H^H^H}
  1003.   {GETS fline,3,R1}
  1004.   {COMP fline,1}  {IFCO-L EL5}
  1005.   {COMP fline,%lineno}  {IFCO-G EL5}
  1006.   {SEND ^J^M}
  1007.   {CALL find_line}
  1008.   {SEND ^J^M%an5%Line %fline reads:^J^M}
  1009. {:EL0}  {SEND %an0%%edline^J^M}
  1010.   {SEND ^J^M%an7%Type in the string to replace or press ENTER to abort.^J^M%an3}
  1011.   {GETS oldstr,60,EL1}
  1012.   {INST edline,%oldstr}
  1013.   {COMP %_pos,0}  {IFCO-G EL2}
  1014.   {SEND ^J^M^J%an1%String not found.^J^M^J}
  1015.   {GOTO EL0}
  1016. {:EL2}  {SETV spos,%_pos}
  1017.   {LENG %oldstr}  {SETV olen,%_len}
  1018.   {SETV mx,0}
  1019.   {SETV ch,79}  {LENG %edline}  {DECR ch,%_len}
  1020.   {INCR mx,%ch}  {INCR mx,%olen}
  1021.   {SEND ^J^M^J%an7%Type replacement string or press ENTER to cut.^J^M%an3}
  1022.   {GETS newstr,%mx,EL3}
  1023. {:EL3}  {SEND ^J^M}
  1024.   {DECR spos}
  1025.   {SUBS lstr,1,%spos,%edline}
  1026.   {INCR spos,%olen}  {INCR spos}
  1027.   {SUBS rstr,%spos,100,%edline}
  1028.   {SETV edline,%lstr%%newstr%%rstr%}
  1029.   {CALL line_update}
  1030.   {SETV ccount,%fline}
  1031.   {GOTO EL0}
  1032. {:EL1}  {SETV olen} {SETV spos} {SETV lstr} {SETV rstr} {SETV newstr} {SETV mx}
  1033.   {GOTO ES4}
  1034.  
  1035. {:insert}
  1036.   {COMP lineno,%max}  {IFCO-G ES3}
  1037.   {SEND nsert^J^M^J}
  1038. {:I4}  {SEND ^M%an4%Line # to insert BEFORE:%an0    ^H^H^H}
  1039.   {GETS fline,3,R1}
  1040.   {COMP fline,1}  {IFCO-L I4}
  1041.   {COMP fline,%lineno}  {IFCO-G I4}
  1042.   {SEND ^J^M}
  1043.   {COMP fline,1}  {IFCO I2}
  1044.   {DECR fline}  {CALL find_line}  {INCR fline}  {GOTO I3}
  1045. {:I2}  {SETV edline,*** BEGINNING OF MESSAGE ***}
  1046. {:I3}  {SEND ^J^M%an7%INSERTING between these lines:}
  1047.   {SEND ^J^M^J%an0%%edline^J^M}
  1048.   {CALL find_line}
  1049.   {SEND ^J^M%an0%%edline^J^M}
  1050.   {SEND ^J^M%an7%Type line to insert or press ENTER to abort.^J^M%an3}
  1051.   {GETS edline,79,I1}
  1052.   {SEND ^J^M}
  1053.   {DECR ccount}
  1054.   {SETV t,2}  {CALL line_update}  {INCR lineno}
  1055.   {SEND %an0%Line inserted.^J^M}
  1056. {:I1}  {GOTO ES4}
  1057.  
  1058. {:list}
  1059.   {SEND ist^J^M}
  1060.   {SEND ^J^M%an7%Include line numbers? %an0(y,%an7%N%an0) : }
  1061. {:L1}  {GETS-H temp,1,L4}
  1062.   {COMP temp,y}  {IFCO L4}
  1063.   {COMP temp,n}  {IFCO L4}
  1064.   {SEND ^H}  {GOTO L1}
  1065. {:L4}  {ROPE %datadir%RTEMP.000,L10}
  1066.   {READ dline}  {READ dline}  {READ dline}
  1067.   {READ dline}  {READ dline}  {READ dline}
  1068.   {SEND ^J^M^J%an3%Your message reads:^J^M^J%an0}
  1069.   {SETV ccount,0}
  1070. {:L5}  {SETV count,0}
  1071. {:L6}  {INCR ccount}  {INCR count}
  1072.   {READ dline}
  1073.   {COMP dline,&▀▀▀▀▀▀ Quote ▀▀▀▀▀▀}  {IFCO ,L11}
  1074.   {SETV dline,%an4▀▀▀▀▀▀ %an7%Quote %an4▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀%an7}
  1075.   {GOTO L12}
  1076. {:L11}  {COMP dline,&▄▄▄▄▄▄ UnQuote ▄▄▄▄▄▄}  {IFCO ,L12}
  1077.   {SETV dline,%an4▄▄▄▄▄▄ %an7%UnQuote %an4▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄%an0}
  1078. {:L12}  {SEND %dline%%an0}
  1079.   {COMP temp,y}  {IFCO ,L7}
  1080.   {SEND ^M%an7%%ccount:%an0}
  1081. {:L7}  {SEND ^J^M}
  1082.   {COMP count,21}  {IFCO ,L6}
  1083.   {CALL screen_full}
  1084.   {COMP ch,y}  {IFCO L5}
  1085.   {RCLO}
  1086. {:L10}  {SETV dline}
  1087.   {GOTO ES4}
  1088.  
  1089. {:replace}
  1090.   {SEND eplace^J^M^J}
  1091. {:R2}   {SEND ^M%an4%Line # to REPLACE:%an0    ^H^H^H}
  1092.   {GETS fline,3,R1}
  1093.   {COMP fline,1}  {IFCO-L R2}
  1094.   {COMP fline,%lineno}  {IFCO-G R2}
  1095.   {SEND ^J^M}
  1096.   {CALL find_line}
  1097.   {SEND ^J^M%an5%Line %fline reads:^J^M}
  1098.   {SEND %an0%%edline^J^M}
  1099.   {SEND ^J^M%an7%Type new line or press ENTER to abort.^J^M%an3}
  1100.   {GETS edline,79,I1}
  1101.   {SEND ^J^M}
  1102.   {CALL line_update}
  1103.   {SEND %an0%Line replaced.}
  1104. {:R1}   {SEND ^J^M}
  1105.   {GOTO ES4}
  1106.  
  1107. {:save}
  1108.   {SEND ave^J^M}
  1109.   {SETV edline}  {SETV fline}
  1110.   {EXEC-N COPY %datadir%WTEMP.000 %dump_file}
  1111.   {EXEC-N DEL %datadir%?TEMP.000}
  1112.   {WOPE-A %dump_file}
  1113.   {GOTO E9}
  1114.  
  1115. {:quote}
  1116.   {COMP r,1}  {IFCO ,E4}
  1117. {:Q1}  {ROPE %quotemsg,Q7}
  1118.   {READ dline}  {READ dline}  {READ dline}  {READ dline}  {READ dline}
  1119.   {COMP dline,}  {IFCO Q10}
  1120.   {READ dline}
  1121. {:Q10}  {SETV qcount,0}
  1122.   {SEND ^M    ^M%an12                                                                               ^M}
  1123.   {SEND                              Quoting %to ...^J^M}
  1124.   {SEND %an12           SPACEBAR = Quote Line            N = Skip Line     Q = Quit         ^J^M}
  1125. {:Q2}  {SEND ^M%an0%%an13                                                                               ^M}
  1126.   {READ dline}
  1127.   {COMP dline,&▀▀▀▀▀▀ Quote ▀▀▀▀▀▀}  {IFCO ,Q12}
  1128.   {SETV dline,▀▀▀▀▀▀ Quote ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀}
  1129.   {GOTO Q5}
  1130. {:Q12}  {COMP dline,&▄▄▄▄▄▄ UnQuote ▄▄▄▄▄▄}  {IFCO ,Q5}
  1131.   {SETV dline,▄▄▄▄▄▄ UnQuote ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄}
  1132.   {GOTO Q5}
  1133. {:Q5}  {SEND %an0%%dline}
  1134.   {SETG 60,time_out,n}
  1135. {:Q6}  {GETS-H ch,1,Q6}
  1136.   {COMP ch, }  {IFCO Q3}
  1137.   {COMP ch,n}  {IFCO Q2}
  1138.   {COMP ch,q}  {IFCO ,Q6}
  1139.   {RCLO}
  1140. {:Q7}  {COMP qcount,0}  {IFCO Q8}
  1141.   {WRIT &▄▄▄▄▄▄ UnQuote ▄▄▄▄▄▄}
  1142.   {WRIT  }
  1143.   {INCR lineno,2}
  1144. {:Q8}  {SETV qcount}
  1145.   {SEND ^J^M%an7%Finished quoting.  Please continue your message ...^J^M}
  1146.   {GOTO E4}
  1147. {:Q3}  {INCR qcount}
  1148.   {COMP qcount,1}  {IFCO ,Q9}
  1149.   {WRIT &▀▀▀▀▀▀ Quote ▀▀▀▀▀▀}
  1150.   {INCR lineno}
  1151. {:Q9}  {WRIT %dline}
  1152.   {INCR lineno}
  1153.   {GOTO Q2}
  1154.  
  1155.